package com.ruoyi.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 收费数据对象 zhwy_chargedata
 * 
 * @author ruoyi
 * @date 2024-05-07
 */
public class ZhwyChargedata extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键，自增 */
    private Long id;

    /** 商铺id，外键 */
    @Excel(name = "商铺id，外键")
    private Long shopsId;

    /** 收费id，外键 */
    @Excel(name = "收费id，外键")
    private Long chargeitemId;

    /** 单价 */
    @Excel(name = "单价")
    private BigDecimal univalence;

    /** 费用开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "费用开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startTime;

    /** 费用结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "费用结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endTime;

    /** 催缴期限(如果不缴费，则状态改为逾期) */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "催缴期限(如果不缴费，则状态改为逾期)", width = 30, dateFormat = "yyyy-MM-dd")
    private Date deadlineTime;

    /** 上次读数 */
    @Excel(name = "上次读数")
    private Long lastData;

    /** 本次读数 */
    @Excel(name = "本次读数")
    private Long thisData;

    /** 倍率【1】 */
    @Excel(name = "倍率【1】")
    private BigDecimal rate;

    /** 损耗【0】 */
    @Excel(name = "损耗【0】")
    private BigDecimal wastage;

    /** 数量【（本期读数-上期读数）*倍率+损耗】 */
    @Excel(name = "数量【", readConverterExp = "本=期读数-上期读数")
    private BigDecimal number;

    /** 滞纳金【如果当前收费项有滞纳金，则产生[总金额 * 滞纳金百分比 * 滞纳天数]】 */
    @Excel(name = "滞纳金【如果当前收费项有滞纳金，则产生[总金额 * 滞纳金百分比 * 滞纳天数]】")
    private BigDecimal latefee;

    /** 金额【数量*单价】 */
    @Excel(name = "金额【数量*单价】")
    private BigDecimal money;

    /** 实收金额 */
    @Excel(name = "实收金额")
    private BigDecimal fundsReceived;

    /** 付款状态【数据字典】 */
    @Excel(name = "付款状态【数据字典】")
    private Long paymentState;

    /** 退款状态【数据字典】 */
    @Excel(name = "退款状态【数据字典】")
    private Long refundStatus;

    /** 退款总金额 */
    @Excel(name = "退款总金额")
    private BigDecimal totalRefundAmount;

    /** 缴费单号【uuid随机】 */
    @Excel(name = "缴费单号【uuid随机】")
    private String billNumber;

    /** 缴费时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "缴费时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date chargeTime;

    /** 缴费方式id,关联支付方式表 */
    @Excel(name = "缴费方式id,关联支付方式表")
    private Long payId;

    /** 收款人姓名 */
    @Excel(name = "收款人姓名")
    private String chargeUser;

//    收费项目名
    private String chargeitemName;

//    用户姓名
    private Long hirerId;

    public Long getHirerId() {
        return hirerId;
    }

    public void setHirerId(Long hirerId) {
        this.hirerId = hirerId;
    }

    //    用户姓名
    private String hirerName;

//    商铺编号
    private String shopsCode;

    public String getShopsCode() {
        return shopsCode;
    }

    public void setShopsCode(String shopsCode) {
        this.shopsCode = shopsCode;
    }

    public String getHirerName() {
        return hirerName;
    }

    public void setHirerName(String hirerName) {
        this.hirerName = hirerName;
    }


    public String getChargeitemName() {
        return chargeitemName;
    }

    public void setChargeitemName(String chargeitemName) {
        this.chargeitemName = chargeitemName;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setShopsId(Long shopsId) 
    {
        this.shopsId = shopsId;
    }

    public Long getShopsId() 
    {
        return shopsId;
    }
    public void setChargeitemId(Long chargeitemId)
    {
        this.chargeitemId = chargeitemId;
    }

    public Long getChargeitemId()
    {
        return chargeitemId;
    }
    public void setUnivalence(BigDecimal univalence) 
    {
        this.univalence = univalence;
    }

    public BigDecimal getUnivalence() 
    {
        return univalence;
    }
    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }
    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }
    public void setDeadlineTime(Date deadlineTime) 
    {
        this.deadlineTime = deadlineTime;
    }

    public Date getDeadlineTime() 
    {
        return deadlineTime;
    }
    public void setLastData(Long lastData) 
    {
        this.lastData = lastData;
    }

    public Long getLastData() 
    {
        return lastData;
    }
    public void setThisData(Long thisData) 
    {
        this.thisData = thisData;
    }

    public Long getThisData() 
    {
        return thisData;
    }
    public void setRate(BigDecimal rate) 
    {
        this.rate = rate;
    }

    public BigDecimal getRate() 
    {
        return rate;
    }
    public void setWastage(BigDecimal wastage) 
    {
        this.wastage = wastage;
    }

    public BigDecimal getWastage() 
    {
        return wastage;
    }
    public void setNumber(BigDecimal number) 
    {
        this.number = number;
    }

    public BigDecimal getNumber() 
    {
        return number;
    }
    public void setLatefee(BigDecimal latefee) 
    {
        this.latefee = latefee;
    }

    public BigDecimal getLatefee() 
    {
        return latefee;
    }
    public void setMoney(BigDecimal money) 
    {
        this.money = money;
    }

    public BigDecimal getMoney() 
    {
        return money;
    }
    public void setFundsReceived(BigDecimal fundsReceived) 
    {
        this.fundsReceived = fundsReceived;
    }

    public BigDecimal getFundsReceived() 
    {
        return fundsReceived;
    }
    public void setPaymentState(Long paymentState) 
    {
        this.paymentState = paymentState;
    }

    public Long getPaymentState() 
    {
        return paymentState;
    }
    public void setRefundStatus(Long refundStatus) 
    {
        this.refundStatus = refundStatus;
    }

    public Long getRefundStatus() 
    {
        return refundStatus;
    }
    public void setTotalRefundAmount(BigDecimal totalRefundAmount) 
    {
        this.totalRefundAmount = totalRefundAmount;
    }

    public BigDecimal getTotalRefundAmount() 
    {
        return totalRefundAmount;
    }
    public void setBillNumber(String billNumber) 
    {
        this.billNumber = billNumber;
    }

    public String getBillNumber() 
    {
        return billNumber;
    }
    public void setChargeTime(Date chargeTime) 
    {
        this.chargeTime = chargeTime;
    }

    public Date getChargeTime() 
    {
        return chargeTime;
    }
    public void setPayId(Long payId) 
    {
        this.payId = payId;
    }

    public Long getPayId() 
    {
        return payId;
    }
    public void setChargeUser(String chargeUser) 
    {
        this.chargeUser = chargeUser;
    }

    public String getChargeUser() 
    {
        return chargeUser;
    }



    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("shopsId", getShopsId())
            .append("chargeitemId", getChargeitemId())
            .append("univalence", getUnivalence())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("deadlineTime", getDeadlineTime())
            .append("lastData", getLastData())
            .append("thisData", getThisData())
            .append("rate", getRate())
            .append("wastage", getWastage())
            .append("number", getNumber())
            .append("latefee", getLatefee())
            .append("money", getMoney())
            .append("fundsReceived", getFundsReceived())
            .append("paymentState", getPaymentState())
            .append("refundStatus", getRefundStatus())
            .append("totalRefundAmount", getTotalRefundAmount())
            .append("billNumber", getBillNumber())
            .append("chargeTime", getChargeTime())
            .append("payId", getPayId())
            .append("chargeUser", getChargeUser())
                .append("hirerId", getHirerId())
            .toString();
    }
}
